// 导入数据库操作模块
const db = require('../db/index')
// 导入处理密码的模块
const bcrypt = require('bcryptjs')
// 获取用户信息的函数
exports.getUser = (req, res) => {

    // 定义获取用户信息的sql语句
    const sqlStr = 'SELECT id,username,nickname,email,user_pic from users where id =?'
    // 调用db.query()来执行sql语句
    db.query(sqlStr, req.auth.id, (error, results) => {
        // 执行sql语句失败
        if (error) {
            res.fnErr(error)
        }
        // 执行sql语句成功,但结果可能为空
        if (!results.length) {
            res.fnErr('获取用户信息失败')
        }
        res.send({
            status: 0,
            msgh: '获取用户信息成功',
            data: results[0]
        })
    })
}

// 更改用户信息的函数
exports.updateUser = (req, res) => {
    const userInfo = req.body
    console.log('req', req.auth.id)
    console.log('userInfo', userInfo)

    const sqlStr = 'UPDATE users set nickname=?,email=? where id=?'
    db.query(sqlStr, [userInfo.nickname, userInfo.email, req.auth.id], (err, results) => {
        // 执行sql语句是否出错
        console.log('更新', results)
        if (err) {
            return res.fnErr(err)
        }
        if (results.affectedRows === 0)
            return res.fnErr('修改用户信息失败')


        res.send({
            status: 0,
            msg: '更改用户信息成功'
        })
    })
}

// 重置密码的函数
exports.updatePsw = (req, res) => {
    const { oldPsw } = req.body
    const { newPsw } = req.body
    // console.log(req.auth)
    const sqlStr1 = 'select * from  users where id= ?'
    const sqlStr2 = 'update users set password=? where id= ?'

    db.query(sqlStr1, [req.auth.id], (err, results) => {
        console.log('results', results)

        if (err) {
            return res.fnErr(err)
        }
        if (!results.length) {
            return res.fnErr('用户不存在')
        }
        // 输入密码和数据库密码是否一致
        if (!bcrypt.compareSync(oldPsw, results[0].password)) {
            return res.fnErr('原密码输入错误！')
        }
        // 原密码输入正确,则修改数据库的密码
        db.query(sqlStr2, [bcrypt.hashSync(newPsw, 10), req.auth.id], (err, results) => {
            if (err) {
                req.fnErr(err)
            }
            res.send({
                status: 0,
                msg: '密码重置成功'
            })
        })

    })
}

// 更换头像的函数
exports.updateAvatar = (req, res) => {
    const sql = 'update users set user_pic=? where id=?'
    db.query(sql, [req.body.avatar, req.auth.id], (err, results) => {
        // 执行 SQL 语句失败
        if (err) return res.fnErr(err)

        // 执行 SQL 语句成功，但是影响行数不等于 1
        if (results.affectedRows !== 1) return res.fnErr('更新头像失败！')

        // 更新用户头像成功
        // return res.fnErr('更新头像成功！', 0)
        return res.fnErr('更新头像成功！', 0)
    })
    res.send('ok')
}